package main

func main() {
	/*
		1.命名类型和未命名类型：
			1.命名类型：
			（1）预声明类型：
				布尔型（bool）、整型（int，int8，int16，int32，int64，uint，uint8，unit16，unit32,unit64，uintptr）、
				浮点型（float32，float64）、复数（complex64，complex128）、字符（byte，rune）、字符串（string）、接口（error）
			注：预声明类型、简单类型 是同一个概念

			（2）自定义类型：
				声明格式：type new_type old_type
				 old_type 可以是“预声明类型、类型字面量、自定义类型”任意一种
			2.未命名类型：
			 	数组（array）、切片（slice）、字典（map）、指针（pointer）、
				通道（channel）、结构（struct）、接口（interface）、函数（function）
			注：复合类型、类型字面量、未命名类型 是同一个概念

		2.底层类型：
			所有的类型都有一个底层类型
			（1）预声明类型 和 字面量类型 的底层类型是它们自身
			（2）自定义类型 中 newtype 的底层类型是逐层递归向下查找的，直到查到的 oldtype 是 预声明类型 或字面量类型 为止

		3.类型相同：
			（1）两个 命名类型 相同的条件：两个类型声明的语句完全相同
			（2）命名类型 和 未命名类型 永远不相同
			（3）两个 未命名类型 相同的条件：类型声明字面量的结构相同，并且内部元素的类型相同
			（4）通过 类型别名语句（type T1 = T2） 声明的两个类型相同
	*/
}
